package org.posupe.empresas;

import org.posupe.util.Endereco;

public class Empresa {
	private String cnpj;
	private String razaoSocial;
	private String sigla;
	private Endereco endereco;
	private String responsavelRH;
	private String telefone;
	private String fax;
	private String nomeFantasia;
	
	public Empresa(String cnpj, String razaoSocial, String sigla, Endereco endereco, String responsavelRH, String telefone, String fax, String nomeFantasia) {
		super();
		this.cnpj = cnpj;
		this.razaoSocial = razaoSocial;
		this.sigla = sigla;
		this.endereco = endereco;
		this.responsavelRH = responsavelRH;
		this.telefone = telefone;
		this.fax = fax;
		this.nomeFantasia = nomeFantasia;
	}

	public Empresa(String cnpj, String razaoSocial, String sigla, String telefone, String fax, String nomeFantasia) {
		this(cnpj, razaoSocial, sigla, null, null, telefone, fax, nomeFantasia);
	}
	
	public Empresa(String cnpj){
		this(cnpj,null,null,null,null,null);
	}
	
	public Empresa(){
		super();
	}
	
	public boolean equals(Object objeto) {
		return objeto instanceof Empresa && ((Empresa)objeto).getCnpj().equals(this.cnpj);
	}
	
	public String getCnpj() {
		return this.cnpj;
	}
	
	public Endereco getEndereco() {
		return this.endereco;
	}
	
	public String getFax() {
		return this.fax;
	}
	
	public String getNomeFantasia() {
		return this.nomeFantasia;
	}
	
	public String getRazaoSocial() {
		return this.razaoSocial;
	}
	
	public String getResponsavelRH() {
		return this.responsavelRH;
	}
	
	public String getSigla() {
		return this.sigla;
	}
	
	public String getTelefone() {
		return this.telefone;
	}
	
	public boolean match(Empresa empresa){
		boolean retorno = true;
		if(empresa.cnpj != null && this.cnpj != null && retorno){
			if(!this.cnpj.contains(empresa.cnpj)){
				retorno = false;
			}
		}
		if(empresa.razaoSocial != null && this.razaoSocial != null && retorno){
			if(!this.razaoSocial.contains(empresa.razaoSocial)){
				retorno = false;
			}
		}
		if(empresa.sigla != null && this.sigla != null && retorno){
			if(!this.sigla.contains(empresa.sigla)){
				retorno = false;
			}
		}
		if(empresa.endereco != null && this.endereco != null && retorno){
			if(!this.endereco.match(empresa.endereco)){
				retorno = false;
			}
		}
		if(empresa.responsavelRH != null && this.responsavelRH != null && retorno){
			if(!this.responsavelRH.contains(empresa.responsavelRH)){
				retorno = false;
			}
		}
		if(empresa.telefone != null && this.telefone != null && retorno){
			if(!this.telefone.contains(empresa.telefone)){
				retorno = false;
			}
		}
		if(empresa.fax != null && this.fax != null && retorno){
			if(!this.fax.contains(empresa.fax)){
				retorno = false;
			}
		}
		if(empresa.nomeFantasia != null && this.nomeFantasia != null && retorno){
			if(!this.nomeFantasia.contains(empresa.nomeFantasia)){
				retorno = false;
			}
		}
		return retorno;
	}
	
	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}
	
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
	public void setFax(String fax) {
		this.fax = fax;
	}
	
	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}
	
	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}
	
	public void setResponsavelRH(String responsavelRH) {
		this.responsavelRH = responsavelRH;
	}
	
	public void setSigla(String sigla) {
		this.sigla = sigla;
	}
	
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
		
	public String toString() {
		return this.cnpj+" - "+this.nomeFantasia+" - "+this.razaoSocial+" - "+this.responsavelRH+" - "+this.sigla+" - "+this.telefone+" - "+this.fax+" - "+this.endereco;
	}
}
